乙個在linux環境執行io操作的bug

2022-02-17 13:17:41 字數 946 閱讀 7161

今天專案有了乙個奇葩的要求。。。是什麼呢

在git的lssues提交了乙個問題後,很快有大佬跟我交流了,也就是基本說說,你怎麼使用的,並沒有解決我的問題

public

static

int getliunxfilelenth(string filename) throws

interruptedexception

} catch

(ioexception e)

finally

catch

(ioexception e)

}return

dateutil.getsecond(line);

}

先說下出現這種問題的原因是什麼把,第一,ffmpeg使用非同步io處理檔案的,所以,

proc =rt.exec(command);這種方式只是給系統乙個通知,,

第二,window與liunx不同的地方是,處處是阻塞,linux之所以能很好的完成大併發,靠的就是非同步io,

而window之所以圖形介面做的好,是因為,系統之間的阻塞通知,可以讓系統執行在乙個流程中。

解決的辦法就是讓通知阻塞我們的程式,

public

static

int getliunxfilelenth(string filename) throws

interruptedexception

p.waitfor();//阻塞

br.close();

// string regexduration = "duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";

。。。。。。。。。。。。

.waitfor();//阻塞

Linux保證執行乙個例項

1.const int path max 1024 預設最大路徑長度 inline std string current exe name int ret readlink proc self exe buf,path max if ret 0 ret path max std string pat...

在乙個python裡執行另乙個python檔案

os.popen cmd,mode r buffering 1 command 呼叫的命令 mode 模式許可權可以是 r 預設 或 w bufsize 指明了檔案需要的緩衝大小 0意味著無緩衝 1意味著行緩衝 其它正值表示使用引數大小的緩衝 大概值,以位元組為單位 負的bufsize意味著使用系統...

Linux 在乙個命令列上執行多個命令

對於單個命令執行我想大多數人都是明了的,也就是在乙個命令列上執行一條命令。那對於在一行上執行多個命令怎麼辦呢,其實也很簡單,只需在各命令之間加上特殊命令符號,我們常規使用到的有3個特殊命令符號。1.如果被分號 所分隔的命令會連續的執行下去,就算是錯誤的命令也會繼續執行後面的命令。root local...