1. 程式人生 > >popen()函式執行指令碼,要用pclose()函式關閉

popen()函式執行指令碼,要用pclose()函式關閉

就像百度百科中所說popen()函式通過建立一個管道,呼叫fork()產生一個子程序,執行一個shell以執行命令來開啟一個程序。這個管道必須由pclose()函式關閉。

其中”必須由pclose()函式關閉“是一個容易被忽視的點,這不光光浪費資源的問題,更涉及到子程序的週期,從而影響函式結果。

比如我在程式中用popen()執行一個SQL指令碼,向資料庫中插入大量的資料(大約有一萬多條,然後commit),然後再程式中執行select語句檢測所插入的行數是否正確。起初,我發現select語句的結果總是不對,和我預期的結果相差很多。後來發現原來是我沒有用pclose()函式關閉程序。如果沒有pclose(),程式將會直接執行下面的Select語句,而SQL指令碼中插入資料很多,還沒有執行完,故而select中的結果不是期望的。用pclose()函式關閉時則完全不一樣,pclose()函式會等待popen函式所建立的程序執行結束之後再關閉它。果不其然,加入pclose()函式後,select的結果是正確。

望大家引以為戒,避免錯誤。

相關推薦

popen()函式執行指令碼pclose()函式關閉

就像百度百科中所說popen()函式通過建立一個管道,呼叫fork()產生一個子程序,執行一個shell以執行命令來開啟一個程序。這個管道必須由pclose()函式關閉。 其中”必須由pclose()函式關閉“是一個容易被忽視的點,這不光光浪費資源的問題,更涉及到子程序的週

popen函式執行命令讀取流資料

描述 popen() 函式 用 建立管道 的 方式啟動一個 程序, 並呼叫 shell. 因為 管道是被定義成單向的, 所以 type 引數 只能定義成 只讀或者 只寫, 不能是 兩者同時, 結果流也相應的 是隻讀 或者 只寫. command 引數 是 一個 字串指

YY李學淩的野心區塊鏈技術改變傳統信息的傳輸路徑

出席 每一個 很多 未來 認知 自動生成 生產 2017年 本地 7月22日,歡聚時代董事長李學淩出席某科技商業峰會並發表演講,演講中,李學淩對外展示了一款基於區塊鏈技術的即時通訊應用BCM。 李學淩在演講中透露出來幾個重要的信息。一是歡聚時代很重視區塊鏈技術應用,二是歡聚

Struct不能直接在結構體內賦值呼叫建構函式

今天在寫同構圖題目的時候一直在WA,不知道錯在哪裡,最後問了下學弟結構體賦值的事情,才明白自己哪裡錯了 #include<bits/stdc++.h> using namespace std; const int maxN = 10005; int N, M, n, m, root[

java小數運算內附現成的工具類。不能double和floatdecimal

https://www.cnblogs.com/xujishou/p/7491932.h 為什麼會出現這個問題呢,就這是java和其它計算機語言都會出現的問題,下面我們分析一下為什麼會出現這個問題: float和double型別主要是為了科學計算和工程計算而設計的。他們執行二進位制浮點運算,這是

阿里雲成立技術脫貧聯盟技術助力脫貧

2018杭州•雲棲大會召開期間,“阿里雲技術脫貧聯盟”宣佈正式成立。技術脫貧聯盟將為正在或計劃加入脫貧攻堅戰的公益組織、政府機構及企事業單位提供多項技術支援,共同打贏脫貧攻堅戰。 首批聯盟合作代表中國扶貧基金會、深圳市慈善會、中民社會救助研究院、南都公益基金會、恩派基金會、

使用SQL Server Management Studio操作replication時機器名登入不要IP地址

如果你在使用SSMS(SQL Server Management Studio)登入SQL Server時,使用的是IP地址,如下圖所示: 當你操作replication時,會報錯:   從上面的錯誤提示可以看出,我們只能通過機器名(server name)來登入SSMS,才能夠操

以一元及二元函式為例通過多項式的函式影象觀察其擬合效能;以及對多項式作目標函式進行機器學習時的一些理解。

 先給出程式碼: import numpy as np from mpl_toolkits.mplot3d import Axes3D from matplotlib import pyplot as plt from datetime import datetime t

各種譜函式的區別是什麼何時何種函式

對時域訊號進行傅立葉變換(FFT)時,可以用多種不同的函式來表示計算結果,如頻譜、自譜、功率譜密度等等,並且這些函式還有不同的格式,如Peak,RMS和Peak-Peak。到底用哪個函式來表示更貼切,它們有什麼區別呢?在討論這些譜函式之前,讓我們明確一下Peak,RMS和Peak-Peak的定義。 &nbs

看完你就是電腦高手了。。趕緊轉回去隨時能看哦!

 1.很多時候,需要暫時離開座位去做別的事情,如果對自己的電腦安全很重視,不妨按住windows鍵後,再按L鍵,這樣電腦就直接鎖屏了,這樣就不用擔心電腦的資料外洩啦 2.要找電腦上的檔案時,一般人會先找到“我的電腦”,然後點選開啟,而高手總是很酷的,輕輕按下鍵盤上的Windows鍵不放然後再按E鍵,直接開啟

C++中為什麼虛擬函式、指標或引用才能實現多型?

學過C++的都知道,要實現C++的多型性必須要用到虛擬函式,並且還要使用引用或者指標,以前學習的時候書本上也是這麼說, 但是書本上沒有說為什麼?   其實只要你認真思考過這個問題你會有三個疑問: 為什麼要用虛擬函式? 為什麼要用指標或者引用? 為什麼使用派生類和基類物件

mac 系統下 使用 crontab 命令設定定時執行指令碼定時書寫規範

1. crontab -e 來編輯自定義自己的任務 【每天的 14點55分執行 python 指令碼】 55 14 * * * python /Users/hanjing/Desktop/pythonworkspace/yangcheapp/sendmail.py 輸

運算子過載何時友元何時成員函式

1.能用成員函式,儘量使用成員函式。因為,友元函式,可以訪問類內的所有資料,破壞了類的封裝。 2.當所過載的運算子的函式的引數中,含有該類不能訪問的資料時,用友元函式。因為,友元函式時全域性函式,它不在某一類中,可以訪問類之外的資料。

【c語言】將兩個字串連線起來不要strcat函式

#include <stdio.h> int main() { char s1[80],s2[40]; int i=0,j=0; printf("input string1:"); scanf("%s",s1); printf("input strin

輸入m個學生每個學生有4門課在主調函式中輸入學生的相關資訊編寫三個函式: (1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生並輸出他們的學號和全部成績要求指標函式實現:fl

  輸入m個學生,每個學生有4門課,在主調函式中輸入學生的相關資訊,編寫三個函式: (1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生,並輸出他們的學號和全部成績,要求用指標函式實現:float*Search(float(*p)[4],int n); (3)找出

python裝飾器限制函式執行時間超時退出

實際專案中會涉及到需要對有些函式的響應時間做一些限制,如果超時就退出函式的執行,停止等待。 可以利用python中的裝飾器實現對函式執行時間的控制。 python裝飾器簡單來說可以在不改變某個函式內部實現和原來呼叫方式的前提下對該函式增加一些附件的功能,提供了對該函式功能

linux 能夠手動執行指令碼放在crontab中無法執行

1. 如果是sh指令碼: 直接在指令碼前面加上: source /etc/profile 2. 如果是python: source /etc/profile && python /mypath/myscript.py ... 原因:crontab 不能自動從

access Vba中對日期時間欄位賦空值時Null 而不是""。

  最近一片白雲對“鶴慶縣人事工資變動調資與工資管理系統”增加了一些功能,其中就是能將Access資料表“職工檔案”中的“薪級變動時間”欄位、“崗位變動時間”欄位的日期用程式自動更新為空,在用SQL語句中遇到一點點小問題,經過在網上查詢,問題總算解決了,怪自己學藝不夠紮實。現將SQL語句提供給正在尋找答案的

函式以及為什麼函式

什麼函式是純的? 純函式的定義是: 1.   如果函式的呼叫引數相同,則永遠返回相同的結果。它不依賴於程式執行期間函式外部任何狀態或資料的變化,必須只依賴於其輸入引數。 2.   該函式不會產生任何可觀察的副作用,例如網路請求,輸入和輸出裝置或資料突變(mutation

函式呼叫父函式函式呼叫的方法函式重寫了那麼最後父函式呼叫的是自己的方法還是子函式的方法。

Q:子類呼叫父類的方法,父類中某個方法所呼叫的方法,子類也重寫了,那麼最後父類中的方法呼叫的是自己的方法,還是子類的方法。 A:呼叫的是子類的方法。     看程式碼: public class Parent { public void used