2015-01-21 27 views
0

我有shell腳本,我需要在後臺運行該連續工作。如何在C程序中使用bash腳本

例如:

#include <stdio.h> 

int main(int argc, char **argv) 
{ 
    for (; ;) { 
      system("./dup -r /root/duptest/"); 
      sleep(60); 
    } 
    return 0; 
} 

它的工作和運行的每一分鐘。

第一個問題:我怎樣才能運行此背景(如& - > ./dup ...... &)沒有把&。

第二個問題:如何將shell代碼放在C源代碼中? 我發現了這個問題,我是否需要爲所有行添加\n\?編輯太難了。

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

#define SHELLSCRIPT "\ 
#/bin/bash \n\ 
echo \"hello\" \n\ 
echo \"how are you\" \n\ 
echo \"today\" \n\ 
" 

int main() 
{ 
system(SHELLSCRIPT); 
return 0; 
} 

第三個問題:我如何使用shell參數C,是這樣的:

./dup.exe -r /blablabla... 

意味着

system("./dup -r /blablabla"); 

我需要使用$ 1 $ 2參數編譯C程序。

回答

1

問題1:尋找「如何做一個過程,在UNIX守護程序進程」雖然守護進程是滿足您需求的矯枉過正,您可以執行步驟,直到過程按照您的要求
問題3運行:您需要有命令行參數,請檢查一下。你的主應該看起來像main(int arg_count, char *args_vector[]){...},你可以訪問每個命令行參數作爲數組元素

1

Q1:使用fork(),不要等待孩子的PID。

Q2:C和C++將串聯相鄰字符串文字,就像這樣:

static const char script[] = 
"echo hello\n" 
"echo how are you\n" 
"echo today" 
; 

int main(int argc, char* argv[]) 
{ 
    puts(script);  // so you can see what it looks like 
    // system(script); // <-- uncomment this line to actually run it. 
    return 0; 
} 

Q3:使用argcargv參數main()建設要執行的命令行。