[英]C program waits for the execution of the command sent with SSH
我試圖通過SSH將命令發送到遠程系統,而我需要通過串行端口進行通信。 當我發送立即執行的命令時,一切正常,但是當我向運行掛起並等待串行數據的程序的客戶端發送命令時,我的c代碼的其余部分將不執行。 我的代碼如下所示。
FILE* remf = popen("ssh DestinationPC > remoteoutput.txt", "w");
if (!remf) { perror("popen ssh failed"); exit(EXIT_FAILURE); };
fprintf(remf, "./IOexpander \n");
fprintf(remf, "./Serial \n");
fclose(remf);
第一行(./IOexpander)工作正常,並打開了一些LED。 沒有第二行,執行將繼續。 但是,當我添加第二行時(當我嘗試運行任何不會立即終止的程序時),上面代碼下方的行將不會執行。
如何在不等待客戶端中命令執行的情況下運行c程序? 提前致謝 :)
由於代碼執行了多個腳本,因此可以通過在框上運行ssh並執行腳本來幫助排除腳本錯誤。
$ ssh user @ hostname“ ./IOexpander && ./Serial \\ n”
stdout已緩沖(請參閱setvbuf(3)和stdio(3) ),因此可能是派生的ssh
進程的標准輸入(請參見popen(3) )
您可能應該以\\n
結束fprintf
格式控制字符串。
您當然應該在適當的地方明智地使用fflush(3) 。
順便說一句,我建議避免使用popen
ssh
並改用libssh 。
也許您的遠程./Serial
失敗了。 您應該檢查一下。 您當前的方法不能很好地處理遠程程序的失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.