簡體   English   中英

C程序等待SSH發送的命令的執行

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

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