Linux system popen函式用法

2021-10-14 05:53:04 字數 1971 閱讀 7195

一、system()函式

system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c string來執行引數string字 符串所代表的命令,此命令執行完後隨即返回原呼叫的程序。在呼叫system()期間sigchld 訊號會被暫時擱置,sigint和sigquit 訊號則會被忽略。

1、原型:

#include

intsystem

(const

char

*command)

;

2、返回值:

如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(null),則返回非零值。

如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。

#include

#include

#include

intmain

(int argc,

char

**ar**)

printf

("system susess\n");

system

("pause");

return0;

}

執行結果:

clc@embed_learn:

~$ gcc system.c

clc@embed_learn:

~$ .

/a.out

ar**[0]

=main

ar**[1]

=aaar**[2]

=bbb

sh:1

: pause: not found

system susess

sh:1

: pause: not found

二、popen()函式

相比system/exec族函式好處,可以將程式執行的結果放到乙個管道中方便捕獲資訊。

原型:

#include

file *

popen

(const

char

*command,

const

char

*type)

;int

pclose

(file *stream)

;

引數說明:

command: 是指向以null結束的shell命令字串的指標。

type: 許可權;讀、寫(w、r)。

返回值:

如果呼叫成功,返回乙個讀\寫指標,否則返回null

demo測試:

#include

#include

#include

intmain

(void

)

執行結果:

clc@embed_learn:

~$ .

/a.out

readbuf=

pid tty time cmd

2870 pts/000

:00:01 bash

9024 pts/000

:00:00 a.out

9025 pts/000

:00:00 sh

9026 pts/000

:00:00 ps

sh:1

: pause: not found

c max函式怎麼用 MAX函式怎麼用?

通常情況下,max函式主要用來返回一組數值中的最大值 語法結構 max 數值1,數值2,如下圖 所示 除了這個基本應用外,max函式其實還有很多非常巧妙的應用,我們來看下面的3個例項。1 合併單元格填充序列號 這裡其實也可以用max函式來填充序列號,輸入公式 max a 1 a1 1,按ctrl e...

python用psf函式 python 函式

6.1 函式介紹 1 為什麼要有函式?沒有函式帶來的困擾?組織結構不清晰,可讀性差 冗餘 可擴充套件性差 2 什麼是函式 具備某乙個功能的工具 函式 事先準備工具 函式的定義 拿來就用 重複使用 函式的呼叫 ps 先定義後呼叫 3 函式的分類 內建函式 len,max 10,11 help 函式名 ...

GetSystemMetrics 函式的用法

可以用getsystemmetrics函式可以獲取系統解析度,但這只是其功能之一,getsystemmetrics函式只有乙個引數,稱之為 索引 這個索引有75個識別符號,通過設定不同的識別符號就可以獲取系統解析度 窗體顯示區域的寬度和高度 滾動條的寬度和高度。為了使使getsystemmetric...