[英]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.