1
我從C++調用bash腳本,首先執行vfork()
,然後調用execv(SHELLPATH, SHELLSCRIPT)
。從bash腳本,我再調用一個awk腳本來處理一個命令的輸出,使用:從C++調用awk腳本停在「bozo:wait_for」
cat textfile | ./parseInfo.awk
我注意到bash腳本運行正常,但是當它到達awk腳本,它只是掛起和有命令行響應:"awk: bozo: wait_for"
。我一直無法找到谷歌這個迴應可能意味着什麼。
從awk腳本中做了一些打印後,我注意到當我做一個system()調用時,這是什麼導致這從腳本等待(然後我需要按回車爲了找回命令行提示符)。所以我在做什麼是:
dirNotExistCheck = "[ -d " DIR "]"
if(system(dirExistCheck) == 1)
{
}
有沒有辦法調用sysem()而不需要用戶的某種交互?
它似乎在等待一些小丑... –
如果你在C++代碼之外運行,會發生什麼?請注意'cat file | awkScript'幾乎總是可以簡化爲'awkScript文件'。這可能是你問題的一部分。無論如何,確定awk程序是否是問題,或者你是否擁有它嵌套得如此之深。祝你好運。 – shellter
當我將它作爲gawk腳本運行時,系統(dirExistCheck)的返回碼爲-1是非常有趣的。我最終做的是以awk腳本(/ usr/bin/awk)的形式再次運行這個腳本,而不是像我在原始文章中提到的那樣檢查目錄是否存在,我使用system(「mkdir - p「DIR) - 如果目錄已存在,則不會創建該目錄。無論如何,我終於能夠正常工作了,但對於awk的這種「wait_for」響應,我仍然是個謎。 @shelter - 感謝您的反饋。 –