兩個很有用的進程間通信函數popen,pclose

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?兩個很有用的進程間通信函數popen,pclose

? 今天起的比較晚,然后來了也不想復習,還是看書學習--寫代碼--寫博客有意思,不敢說有多精通,至少每天都在學習新知識,不求立刻完全消化,但求每天有進步。

? 現在就看看這兩個函數,其實都是創建一個管道到子進程,但是使用這兩個函數要比昨天使用pipe() 函數簡單的多。

??? ? #include <stdio.h>
? ? ? ?FILE *popen(const char *command, const char *type);
? ? ? ?int pclose(FILE *stream);

? ? ? ?函數原型參上。popen 函數有兩個參數,第一個是執行的可執行程序,這個函數首先會調用fork( )然后調用exec( )函數執行這個可執行文件。然后還有一個參數,有兩個選項(r & w). r :將返回的文件指針連接到可執行程序的標準輸出,w:將返回的文件指針連接到可執行文件的標準輸入。

? ? ??

#include<stdio.h>
#include<apue.h>
#include<sys/wait.h>
#include<unistd.h>
#define PAGER "${PAGER:-more}"
#define MAXLINE 255
int main(int argc,char **argv)
{char line[MAXLINE];FILE *fpin,*fpout;if(argc != 2){printf("plesase enter the Pathname\n");}if((fpin = fopen(argv[1],"r")) == NULL){printf("can not open \n");}if((fpout = popen(PAGER,"w")) == NULL){printf("popen error\n");}while(fgets(line,MAXLINE,fpin) != NULL){if(fputs(line,fpout) == EOF){printf("fputs error\n");}}if(ferror(fpin)){printf("fgets error\n");}if(pclose(fpout) == -1){printf("pclose error\n");}exit(0);
}
首先我們應當在本地創建一個文本文件隨便寫入一些東西,然后傳給這個程序,這個程序調用本身的more 分頁程序,將文本里的東西分頁顯示在終端上。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

轉載于:https://www.cnblogs.com/zmrlinux/p/4921404.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257052.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++中指針箭頭的用法

1、c中指針用箭頭來引用類或者結構體的成員&#xff0c;箭頭操作符“->”用來引用指針對象。這是是用于類&#xff0c;或者是結構體的指針變量用的。 如struct Point {int x,y;};Point *ptnew Point;pt->x1; 舉例子說明一下&#xff1a;比如&#xff0c;我有一個對象dark…

化零為整WCF(14) - 事務(Transaction)

[索引頁][源碼下載] 化零為整WCF(14) - 事務(Transaction)作者&#xff1a;webabcd介紹WCF(Windows Communication Foundation) - 事務(Transaction)&#xff1a; 對契約方法使用TransactionFlowAttribute聲明&#xff08;設置TransactionFlowOption參數&#xff09;&#x…

有限元分析筆記01-平面應力和平面應變

https://www.zhihu.com/question/30439292 http://blog.sina.cn/dpool/blog/s/blog_c4c804690102vqqs.html plate stress plate strain

MQTT-SN協議亂翻之實現要點

前言 本篇是MQTT-SN 1.2協議最后一篇翻譯了&#xff0c;主要涉及實現要點&#xff0c;很簡短。 需要支持QoS 值為 -1 QoS雖默認設置有0,1,2三個值&#xff0c;但還有一種情況其值為-1。來自客戶端的PUBLISH消息中若QoS為-1的情況下&#xff0c;此刻客戶端不會關心和網關有沒有建…

oracle-REDO日志文件分析(insert)

1:記錄當前scnselect dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------11595722:創建表CREATE TABLE team (team_code VARCHAR2(3),team_name VARCHAR2(30),country_code VARCHAR2(3) );INSERT INTO team VALUES (M…

刪除修改bond

參考地址&#xff1a;http://www.111cn.net/sys/linux/79301.htm 四、刪除bonding設備 如由于最初配置的bonding設備取名為bond0&#xff0c;而后改名為了bond1&#xff0c;造成了兩個bonding設備的存在&#xff0c;現在需刪除bond0 。先查看下網絡設備&#xff1a; # ls /sys/…

學習筆記(18):Python網絡編程并發編程-守護進程

立即學習:https://edu.csdn.net/course/play/24458/296429?utm_sourceblogtoedu 守護進程&#xff08;了解&#xff09; 1.概念&#xff1a;守護進程是主進程在創建子進程的時候&#xff0c;將子進程設置成守護自己的進程&#xff0c;等主進程結束后&#xff0c;不管子進程的…

靜態頁面之間的轉發與json與ajax做到動態數據

我們見過很多使用jsp ,php,asp的動態網頁技術的網站了,我們知道如果一個網站內容更新頻率極低,而內容量不是十分龐大時,這樣的網站(一次開發完成后不會需要較多的維護成本)的完全可以使用全部使用靜態頁面來做,此時其實反而可以得到更好的效果(更快的響應時間(省掉了服務器各種…

數組的最后一位的下一位為什么是0?

以下是我做的兩個實驗&#xff0c;加證實了數組的最后一位的后一位是0&#xff0c;只應該是系統自動添加的標志位 1、比如 int a[5] 則a[5]0,這個是什么原因我還沒有搞懂 #include<iostream> using namespace std;int main() {int a[5];int *pa;for(int i0;i<5;i){a[i…

iOS開發網絡篇—NSURLConnection基本使用

iOS開發網絡篇—NSURLConnection基本使用 一、NSURLConnection的常用類 &#xff08;1&#xff09;NSURL&#xff1a;請求地址 &#xff08;2&#xff09;NSURLRequest&#xff1a;封裝一個請求&#xff0c;保存發給服務器的全部數據&#xff0c;包括一個NSURL對象&#xff0c;…

如何查看mysql連接相關參數

1.查看當前所有連接的詳細資料: mysqladmin -u root -ppassword processlist 這里password為數據庫用戶root的密碼 2.只查看當前連接數(Threads就是連接數.): mysqladmin -u root -ppassword status 這里password為數據庫用戶root的密碼 3.如何知道當前MySQL設置的并發連接數是…

學習筆記(19):Python網絡編程并發編程-互斥鎖

立即學習:https://edu.csdn.net/course/play/24458/296430?utm_sourceblogtoedu 1.互斥鎖&#xff1a; 多進程間的內存是相互隔離的&#xff0c;因此其數據也是相互隔離的&#xff0c;但是所有的進程都共享一個文件操作系統或者說共享文件處理器和打印端。而共享帶來的是競爭…

使用HTML5+CSS3制作圓角內發光按鈕----示例

<!doctype html> <html> <head> <meta charset"utf-8" /> <title>制作漂亮的圓角按鈕<title> <style type"text/css"> .loginBtnDiv { float:right; padding-right:50px; padding-top:10px; } .loginBtn, .Resg…

C++中的sort()函數的原形

1、sor(a,an,compare) {//前兩個是參數是待排序的數組首地址和尾地址 //最后一個參數是compare表示的比較類型 //可調用functional函數的less&#xff08;&#xff09;和greater&#xff08;&#xff09;函數比較大小}

鼠標放上超鏈接顯示背景效果

鼠標放上超鏈接顯示背景效果&#xff1a; <html> <head> <style type"text/css"> a.one:link {color: #ff0000} a.one:visited {color: #0000ff} a.one:hover {color: #ffcc00}a.two:link {color: #ff0000} a.two:visited {color: #0000ff} a.two:…

學習筆記(20):Python網絡編程并發編程-互斥鎖與join的區別

立即學習:https://edu.csdn.net/course/play/24458/296432?utm_sourceblogtoedu 互斥鎖與join的異同&#xff1a; 1.同&#xff1a;都是將多進程并發模式變成多進程串行&#xff0c;保證了數據的有序性 2.異&#xff1a; 互斥鎖只是對于進程的局部代碼實施串行執行變化&#x…

Kali滲透(二)之被動信息收集

被動信息收集 公開渠道可獲得的信息 與目標系統不產生直接交互 盡量避免留下一切痕跡 下面是兩個關于開源情報&#xff08;OSINT&#xff09;的書籍 美國軍方 北大西洋公約組織 信息收集內容 一.IP地址段與域名信息 二.郵件地址 三.文檔圖片數據 四.公司地址 五.公司組織…

ccBPM典型的樹形表單和多表頭表單的流程示例

ccBPM典型的樹形表單和多表頭表單的流程 關鍵字&#xff1a;樹形表單。ccBPM支持樹形表單&#xff0c;也可以稱之為樹結構的多表單或者多表頭表單。 應用場景&#xff1a;比如項目招標類流程&#xff0c;在填寫項目申請的環節&#xff0c;需要填寫公司簡介、公司業績、項目實施…

由strcat函數引發的對char *a和char a[]以及sizeof和strlen

/* http://www.cnblogs.com/kaituorensheng/archive/2012/10/23/2736069.html參考這篇文章* char *a "Hello";Hello存放在常量區&#xff0c;是無法修改的。 * 通過指針只可以訪問字符串常量&#xff0c;而不可以去改變它 * * * char a[] "Hello";…

for(;;)函數中判斷條件執行順序

for(i100;i>0&#xff1b;--i) { cout<<"i"<<i<<endl; } 它的執行過程如下&#xff1a; 1) 先求解表達式1。 2) 求解表達式2&#xff0c;若其值為真&#xff08;非0&#xff09;&#xff0c;則執行for語句中指定的內嵌語句&…