簡體   English   中英

無法在C中使用execve()調用“ pbmtextps”?

[英]Failed to call “pbmtextps” with execve() in C?

在我的Linux終端上,當我鍵入

pbmtextps cat | pamfile

然后按回車。

它給了我以下輸出,

stdin:  PBM raw, 83 by 104

但是,我試圖通過在主程序中使用execve()來調用“ pbmtextps”。 以下是該程序的代碼段:

char* haha[] = {"pbmtextps","cat","|", "pamfile", NULL};
if(execve("pbmtextps",haha, NULL) == -1){
    fprintf(stderr, "%s\n", "NOT ok");
   }
else{
    fprintf(stdout, "%s\n", "OK");
}

程序啟動后,程序打印“ Not ok”。 我在同一終端的同一目錄中運行該程序。

execve()不會搜索要運行的程序的路徑,因此您需要為其提供有效的絕對或相對文件名。 它還不使用外殼,因此您嘗試的管道操作將無法正常工作。 所有參數都直接傳遞給正在執行的程序。

它也不會成功返回,因為沒有什么可返回的因此打印成功消息毫無意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM