如何讓一個C++程序在Linux中打開另一個程序?它與使用shell命令的Windows相似嗎?Linux C++如何打開一個程序
-6
A
回答
0
您可以使用標準庫調用system()
,這與Windows Shell命令非常相似。對於更多控制,您可以使用exec()
及其變體。
1
3
有一個標準的C函數,system()
它運行一個命令並等待它完成。
有一個標準的POSIX函數popen()
,它在新進程中運行命令並返回連接到新進程的管道。管道通常是單向的,它可以讀取或寫入(一些平臺,如BSD允許雙向管道)
或者你可以手動執行,通過使用POSIX功能fork()
來分叉一個新的進程,然後其中一個exec()
家族用不同的程序替換過程映像。
我認爲最簡單的方法是使用我的Pstreams庫。這將在新進程中運行命令,並使用iostream兼容接口將管道連接到其任何stdin
,stdout
和stderr
。這比fork
& exec
(但要簡單得多),但比popen
更具靈活性和安全性。
0
使用execl()
函數。它適用於C語言,但它應該可以正常工作。如需更多信息和一些軟件爲例看看這個:http://www.gidforums.com/t-3369.html
0
通常你第一次使用功能叉啓動另一個過程,然後EXEC交換新的進程正在運行的是希望PROGRAMM(即PROGRAMM開始antother程序)與你想開始的那個。代碼看起來大致如下:
pid_t pid = fork();
switch(pid) {
case 0: // we are the child process
exec(name of exectuable); //exact signautre differs
break;
case -1: //An error ocurred
std::cout << "error\n";
}
叉克隆您正在運行的進程。他們是完全相同的,他們甚至運行相同的程序。唯一的區別是返回的PID。調用過程獲取孩子的pid,孩子得到零。開關狀態決定了這些情況。 Exec取代了另一個程序正在運行的程序。從我記得的地方來看,它只保留文件描述符。 Exec在參數和搜索路徑方面有幾個varaiants,請在man page中查找它們。
相關問題
- 1. 如何在Linux中打開一個程序的多個實例
- 2. 如何通過linux中的C程序打開新終端
- 3. C#如何選擇一個打開的應用程序窗口
- 4. C Linux的 - 如何從另一個程序執行程序
- 5. 從Linux上的C++文件打開一個進程
- 6. C# - 如何打開Excel應用程序?
- 7. 從C打開/運行另一個程序,然後關閉這個程序
- 8. 在C程序中打開一個簡單的python「程序」!
- 9. 在Linux上如何守護一個c/C++程序
- 10. 當我打開Firefox時自動運行一個C程序?
- 11. 一個C++應用程序無法在Linux上的一個線程中打開2個SQLite數據庫?
- 12. C++程序在Linux上正常打開文件但在Windows上不打開
- 13. 如何檢查一個文件是否被另一個進程(Java/Linux)打開?
- 14. 如何打開這個程序?
- 15. 如何列出Linux中每個應用程序打開的線程?
- 16. 從C++程序在Windows和Linux中打開chm文件
- 17. 從基於Linux的C程序打開並讀取Excel?
- 18. 如何製作打開其他程序的C++程序?
- 19. 如何在其默認程序中打開文件 - Linux
- 20. 從另一個程序中打開一個應用程序
- 21. 如何打開在另一個應用程序中打開的文件
- 22. 如何在C中打開一個進程?
- 23. `start`程序打開一個新窗口
- 24. 打開一個應用程序的Java
- 25. 巴什 - 在打開一個程序
- 26. 打開與另一個程序
- 27. 如何從C++代碼打開一個單獨的終端程序?
- 28. 打開一個在線應用程序來打開txt文件
- 29. Visual Studio C# - 應用程序在後臺打開一個cmd
- 30. c#打開一個壓縮文件到程序
使用'exec'函數之一。 –
您是否在嘗試將Windows +終端與Linux + C++進行比較? – 2013-01-15 22:10:29
這真的不難搜索。 – chris