獲取system系統呼叫的輸出

2021-06-09 20:55:27 字數 872 閱讀 2202

#include #include #include #include #include static int getresultfromsystemcall(const char* pcmd, char* presult, int size)

//hide stdout

int bak_fd = dup(stdout_fileno);

int new_fd = dup2(fd[1], stdout_fileno);

//the output of `pcmd` is write into fd[1]

system(pcmd);

read(fd[0], presult, size-1);

presult[strlen(presult)-1] = 0;

//resume stdout

dup2(bak_fd, new_fd);

return 0;

}int main(void)

; char cmd[100] = ;

sprintf(cmd, "cat %s | grep -m 1 -e \"^%s\" | cut -d= -f2 | sed 's/[[:space:]]*//g'", filepath, key);

getresultfromsystemcall(cmd, res, sizeof(res)/sizeof(res[0]));

//getresultfromsystemcall("export aaa=1234 && echo $", res, sizeof(res)/sizeof(res[0]));

printf("result is [%s]\n", res);

return 0;

}

system系統呼叫的使用

system 系統呼叫在應用中很廣泛 可以直接在c 中呼叫命令,執行一些特殊操作,用法如下.1.直接執行命令 可以在c檔案中直接執行命令,這是基本用法,例如 system mkdir test system chmod 777 test.bin 等等 2.如果需要執行的命令是變動的,則可以使用字串變...

vc 呼叫exe獲取輸出資訊

呼叫命令列程式,返回結果。把命令列結果輸入到管道中,exe的輸出資訊都存在了stroutput這個變數裡。cstring strcmd l yara64.exe c users windows32 downloads yara master yara master windows vs2017 x6...

獲取設定時間系統呼叫

名字 用處time t time time t t 獲取系統時間,獲取的為秒數 int stime time t t 設定系統時間,設定的為秒數 int gettimeofday struct timeval tv,struct timezone tz 設定系統時間,可獲取秒數與微秒數 int se...