導航:首頁 > 操作系統 > linuxargc

linuxargc

發布時間:2022-09-13 06:45:10

① c語言中argc和argv是什麼意思

argc是參數個數,定義為int
argv是字元串數組,存的是參數,定義為char**或者char*
argv[]
比如你編譯好的程序為my.exe
命令行執行
my.exe
1
2
3
那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3";

linux下,在調用main函數之前怎樣得到命令行參數argc和argv

#include <mutex>
#include <thread>
class main_args;

namespace details
{
template<typename MainArgs>
class main_args_access : MainArgs
{
public:
static void get_main_args_func(int c, char* v[], char* p[])
{
std::call_once(MainArgs::get_flag, [&](){
MainArgs::argc = c;
MainArgs::argv = v;
MainArgs::envp = p;
});
}
};
}
class main_args
{
private:
friend class details::main_args_access<main_args>;
static std::once_flag get_flag;
public:
static int argc;
static char** argv;
static char** envp;
};
int main_args::argc;
char** main_args::argv = nullptr;
char** main_args::envp = nullptr;
namespace details
{
// gcc
#if defined(__GNUC__) && (__linux__)
__attribute__((section(".init_array"))) void (*get_main_args_func_ptr)(int, char*[], char*[]) = &(main_args_access<main_args>::get_main_args_func);
#endif
}
必需支持C++11以上的編譯器

③ linux編程中,getopt(argc, argv, "d:s:t:7xoch") 語句解釋 謝謝

d:這個參數後必須跟一個字串,如:-d xxx,如果沒有XXX這個字串,getopt將返回『?』,這個和沒有相關參數返回值是一樣的,所以建議在這個getopt參數字串前加上『:』,如:「:d:s:t:7xoch」,這樣當沒有跟XXX字串時,將返回':',同理s:t:是一樣,xoch參數後不要跟XXX字串,如果跟上,在執行getopt之後,所以未解析的參數會被集中在一起,這時可以用全局變數argv[optind]除開始獲取:
for(;optind<argc;optind++){
strcpy(v,argv[optind]);
}
關於數字,抱歉我還沒用過,我猜大概是限制所跟字串的長度的。

④ 在linux下用gcc編譯C語言程序,其中main函數是帶參的(argc argv,txt的文件),請問如何設置將該文件讀進

main參數中argv數組中的第二個(即argv[1])為該可執行程序的第一個參數
也是托到該可執行程序上的文件的路徑
有了路徑,在程序中讀取該路徑文件內容並顯示
void main(int argc,char *argv[])
{
/*讀取並顯示argv[1]文件的內容,學過C語言的文件讀寫吧*/
}

⑤ linux上怎麼隱藏命令行參數

關於在 UNIX/Linux 系統下面,任何人都無法隱藏命令行參數。因為它們的命令、以及相關的各種參數都是標準的,任何一個如果想學習 UNIX/Linux 系統的人,都能夠找到相關的命令使用文檔(例如:顯示文件名及其子目錄名的命令:ls ,它就有各種參數,只要想學習該命令的使用,那麼誰也無法隱藏命令行參數)。
除非該人是一個精通UNIX/Linux 操作系統內核底層編程的人員,那麼他當然可以實現隱藏命令行參數的目的。例如:他可以通過修改 Linux 系統有關 ls 命令使用的這部分內核源代碼,達到讓任何用戶使用 man ls 時,不顯示出來 ls 命令到底都有哪些參數可以使用。

⑥ linux進程通信 中的exec問題

哪裡寫的這些...好亂阿..

先解釋下基本的:

int main(argc,char * argv[])
main的參數,就是命令行參數.

比如你的可執行文件是test,你希望在程序執行時傳入IP地址,那麼可以這樣:

./test 127.0.0.1

此時,argc =1,argv[1]是就是指向"127.0.0.1"指針(命令參數全部當作字元串來處理的)。
而 argv[0]就代表第一個參數,這里對應的就是"./test"。
argc和argv在mian裡面都是可以使用的,出了main的范圍就不能使用了。

再來說你提出的第一個地方,exec的問題。

exec實際上包含了一組函數,execl, execlp, execle, execv, execvp, execvpe
具體使用方法,你man execv就可以得到這些函數的使用方法。

exec函數的作用是,產生一個新進程,結束當前進程(具體執行的操作是復制當前進程的一部分數據和許可權,然後根據參數啟動一個新的進程)。

exec這組函數執行時候,需要提供的參數包括:一個可執行程序的路徑,傳遞給可執行程序的參數。(這里的參數,與剛才說到的main的參數含義相同。)

說到這里應該明白了吧...就一個。

我不知道你要hello world干什麼...照你意思給寫了個.

第一個,就是你貼出來的代碼改動一點點(我這邊運行有點問題):

#include <stdio.h>
main(int argc,char* argv[])
{
int i=0
while(i<=argc)
{
printf("arguement %d : %s ",i,argv[i]);
printf("\n");
i++;
}
}

運行程序:
$gcc test.c -o test
$./test hello world
輸出結果:
[ksl@myhost WGX]$ ./test hello world
Arguement 0:./test
Arguement 1:hello
Arguement 2:world
Arguement 3:(null)

然後第二個,使用exec的例子,我用execl吧..
文件名是test1.c

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void main(int argc,char *argv[])
{
printf("This is not exec...");

execl("./test","hello","world",NULL);

//如果exec執行正常,下面的printf將不會被執行
//因為當前進程已經結束,./test將被執行
printf("exec error");
}

輸出結果:
[ksl@myhost WGX]$ ./test1
Arguement 0:hello
Arguement 1:world
Arguement 2:(null)

後者並沒輸出"./test"....就是exec啟動的程序,其命令行參數中只有參數.(我也不曉得原因...=.=||)

⑦ linux 命令參數提示

很少看有人去補全參數。

我有見過同事用zsh替代bash的,那個好像可以補全參數,但不是所有軟體,至少常用軟體沒問題。

⑧ linux下udp通信的客戶端、伺服器端的c語言程序 用int argc,char *argv[] 能夠輸入ip和埠號

占個位置,晚上回去給你發,我做的是C語言的socket通信的小程序,我是先創建了一個守護進程,我的守護進程,做的任務就是你所說的中轉程序的工作,通信的客戶端,先把消息發給守護進程,再由守護進程轉發給另一個客戶端。
守護進程:
守護進程,也就是通常說的Daemon進程,是Linux中的後台服務進程。它是一個生存期較長的進,通常獨立於控制終端並且周期性地執行某種任務或等待處理某些發生的事件。守護進程常常在系統引導裝入時啟動,在系統關閉時終止。Linux系統有很多守護進程,大多數服務都是通過守護進程實現的,同時,守護進程還能完成許多系統任務,例如,作業規劃進程crond、列印進程lqd等(這里的結尾字母d就是Daemon的意思)。
由於在Linux中,每一個系統與用戶進行交流的界面稱為終端,每一個從此終端開始運行的進程都會依附於這個終端,這個終端就稱為這些進程的控制終端,當控制終端被關閉時,相應的進程都會自動關閉。但是守護進程卻能夠突破這種限制,它從被執行開始運轉,直到整個系統關閉時才退出。如果想讓某個進程不因為用戶或終端或其他地變化而受到影響,那麼就必須把這個進程變成一個守護進程。

⑨ linux C語言 怎麼樣由終端執行時鍵入賦值程序中的某變數、 就是這樣 ./a.out 1 或者 ./a.out + 字元串

#include<stdlib.h>
intmain(intargc,char*argv[]);
{
}

這里 argc 就是命令行參數個數,argv[] 中存放命令行參數,當然都是字元串,需要自己去轉換。

⑩ 十萬火急 在linux 下怎麼操作int main(int argc,char *argv[])

  1. linux下是不看文件後綴名的,並且這里的可執行文件也不是.exe

  2. 你用gcc -Wall -o cf cf.c這里cf就是生成的可執行文件名了

  3. 運行時輸入:./cf 1.txt 要保證有這個1.txt文件,因為你第一個是以r的方式打開

  4. argc 就是你命令行輸入參數的個數,這里就是2個,一個是./cf 一個是1.txt

  5. argv[0]就是./cf,argv[1]就是1.txt以此類推

閱讀全文

與linuxargc相關的資料

熱點內容
解壓館認知理解 瀏覽:239
為什麼使用非官方伺服器會封號 瀏覽:9
佛山加密文檔軟體 瀏覽:813
港式5張梭哈源碼 瀏覽:241
數據中心pdf 瀏覽:524
crf源碼解析 瀏覽:853
伺服器軟體開發是什麼意思 瀏覽:941
刪除彩信android 瀏覽:862
元宵節猜燈謎h5源碼 瀏覽:69
樂培生app怎麼綁定 瀏覽:762
視頻壓縮不清楚怎麼說 瀏覽:525
加好友伺服器繁忙是怎麼回事 瀏覽:381
怎麼解綁app的支付寶賬號 瀏覽:912
ip地址伺服器不可用怎麼解決方法 瀏覽:183
為什麼軟體需要伺服器 瀏覽:63
redis操作命令大全 瀏覽:597
python字元串重復索引 瀏覽:963
為什麼香信新版本連接不上伺服器 瀏覽:50
元旦程序員打羽毛球 瀏覽:614
otc焊接機器人離線編程教學 瀏覽:412