gpt4 book ai didi

c - 我的第一个 Windows 命名管道,不知道出了什么问题

转载 作者:行者123 更新时间:2023-11-30 15:53:35 25 4
gpt4 key购买 nike

编辑:这是完整的代码,忽略罗马尼亚语注释。还有 2 或 3 个名字未从罗马尼亚语翻译过来:http://pastebin.com/JjtayvXX

我正在尝试学习操作系统的基础知识,现在我正在 Windows 下使用命名管道,但我不知道出了什么问题。

老实说,我正在研究一个 friend 做过的例子,但他和我一样糟糕,甚至更糟。虽然嗨的程序有效(尽管它做了其他事情),但他无法解释任何事情,很可能只是从某个地方复制,仍然......不重要,我想说的是我正在从示例中学习,而不是专业的.

服务器接收来自客户端的消息,返回最大和最小数字。

服务器.c:

#include "windows.h"
#include "stdio.h"

struct Msg {
int numbers[20];
int length;
};

...

int main () {

HANDLE inputPipe, outputPipe;
Msg msg;

while (true) {

inputPipe = CreateNamedPipe ("\\\\.\\pipe\\Client2Server",
PIPE_ACCESS_INBOUND,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
0, //Numb of output bytes
sizeof(Msg), // Numb of input bytes
0, // Wait forever
NULL); // Don't know how to use security

ConnectNamedPipe (inputPipe,NULL);

// Here is where the server dies
ReadFile (inputPipe, &msg,sizeof(Msg),NULL,NULL);

现在Client.c:

struct Msg {
int numbers[20];
int length;
};


int main () {

HANDLE outputPipe, inputPipe;
Msg msg;

// @misc: read data from keyboard, create msg

outputPipe = CreateFile ("\\\\.\\pipe\\Client2Server",
GENERIC_WRITE,
FILE_SHARE_READ, // * comment after code
NULL, // again, I know nothing about security attributes
CREATE_ALWAYS, // either create or overwrite
0,
NULL);

// Here is where it dies
WriteFile (outputPipe, &msg, sizeof(Msg), NULL, NULL);

我收到访问冲突写入位置 0x00000000。不知道为什么。

  • 我希望这个进程只能写入,而另一个进程(服务器)只能读取。 FILE_SHARE_READ 可以吗?

另外,我不知道如何弄乱 CreationDisposition/FlagsAndAttributes(CreateFile 中的最后 2 个参数),它们可以吗?

最佳答案

编辑:添加实际答案,引用其他主题,自己尝试一下

WriteFile() 的 第四个参数(指向将存储字节数的变量的指针)不应为空。根据 API 描述,如果第五个参数 lpOverlapped 不为 null,则此参数只能为 NULL。

在这里查看类似的主题: Why does WriteFile crash when writing to the standard output?

<小时/>

您可以检查/打印 ReadFile() 的返回值(如果 return = 0FALSE 则失败)和 client.c CreateFile()(如果返回INVALID_HANDLE_VALUE则失败)看看是否成功?

如果失败,能否在调用后立即打印GetLastError()返回的值,以便我们看到具体的错误?

关于c - 我的第一个 Windows 命名管道,不知道出了什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com