我有一個將日誌寫入日誌文件的功能 - write_log()
。只調用一次函數,讓其他函數訪問它的返回值?
我需要知道我處理的是什麼類型的磁盤,SSD或傳統硬盤。我有一個函數:
/*
* Returns disk type.
*
* 0 -> SSD
* 1 -> HDD
*/
int get_disk_type(void)
{
int disk_type;
char line[line_buf];
FILE * disk_pipe = fopen("/sys/block/sda/queue/rotational", "r");
if(disk_pipe)
{
fgets(line, sizeof line, disk_pipe);
sscanf(line, "%d", &disk_type);
}
fclose(disk_pipe);
return disk_type;
}
我想傳遞disk_type
作爲參數傳遞到日誌中的消息日誌文件的功能。由於該函數調用次數太多,所以無法在任何地方更改write_log()
的語法。
我想,也許讓write_log()
呼叫get_disk_type()
但由於write_log()
被調用的次數太多,get_disk_type()
將被調用幾次也和可能妨礙性能(這已經從日誌文件確定)。
所以我想知道write_log()
訪問disk_type
的最佳方法是什麼?
'popen(「cat ...」)'?爲什麼不只是「打開」(「...」)? – melpomene
@melpomene是的。將更新它。 –
使用重構IDE(或全局正則表達式搜索/替換)可以輕鬆地改變對'write_log()'的調用。 – melpomene