跟踪vfs_write(),如何写入STDIN?

时间:2016-07-31 16:46:42

标签: c linux linux-kernel

我在内核3.4上使用vfs_write()跟踪KProbes,我希望能够知道DECLARE v_old_rec company_table%ROWTYPE; BEGIN SELECT * INTO v_old_rec FROM company_table WHERE company_id = 32789; INSERT INTO company_table_hist VALUES v_old_rec || ',MONTHLY UPDATE'; END; write()一起调用的时间。

起初,我认为我应该学习如何在Linux内核中实现标准流,所以我继续了解了PTY / TTY文件系统。

天真地,我检查了正在写入的STDIN的文件系统是struct file,但我发现该任务正在使用的文件都不是{{1} }类型。所以我接着打印了任务正在使用 的文件系统,甚至给PTYFS写了一个特殊的字符串,所以我可以PTYFS稍后对其进行日志记录

我发现STDIN的写入实际上是使用write_pipefifo_fops写入grep的。令人惊讶的是,STDIN未引用此pipe

这是我迷路的地方。我想了解pipe的{​​{1}}条目与作为current->files->fdt->fd[0]的参数传递的struct file条目之间的关系,当current->files->fdt->fd[0]写入时执行。

0 个答案:

没有答案