天嵌 ARM开发社区

 找回密码
 注册
查看: 1245|回复: 0

为什么我的write函数老是返回-1?

[复制链接]
cumtgao 发表于 2013-3-13 15:35:19 | 显示全部楼层 |阅读模式
这是一段应用程序代码,我测试过open 和ioctl函数都能正常测试  但是write函数总是返回-1,用printk在驱动的write函数里面也证明根本就没找到该驱动的write函数。
#include <unistd.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#define LED_ON 1
#define LED_OFF 0
static int fd;  //用于存放打开设备时返回的文件句柄

int main(int argc, char **argv)
{
int led_no = 0;
int val ;
int ret;
fd = open("/dev/GPIO_DRV", 0);  //打开设备
if(fd < 0)
  {
   perror("open device failed");
   exit(1);
  }
  
while(1)
  {
   for(led_no = 0; led_no < 4; led_no++)
    {
     ioctl(fd, LED_ON, led_no);  //点亮一盏灯
     sleep(2);
    }
   led_no = 0;
   for(led_no = 0; led_no < 4; led_no++)
    {
     ioctl(fd, LED_OFF, led_no);  //点亮一盏灯
     sleep(1);
    }
   led_no = 0;
   if(argc != 2)
    {
     printf("Usage :\n");
     printf("%s <on|off>\n", argv[0]);
     return 0;   //退出重新运行应用程序
    }
   
   if (strcmp(argv[1], "go") != 0)  //如果第二个参数不是go
   {
    if (strcmp(argv[1], "on") == 0)  //如果第二个参数为on
    {
     printf("led app on\n");
     val  = 1;
    }
    else if (strcmp(argv[1], "off") == 0) //第二个参数为off
    {
     printf("led app off\n");
     val = 0;
    }
     ret = write(fd, &val, 4);
    if(ret < 0)
     {
       printf("write failed ret = %d\n", ret);
       return 1;
     }
    return 0;
   }

   
  }
//close(fd); //关闭设备
return 0;
}

printf("write failed ret = %d\n", ret);
到这句就打印出 ret = -1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 00:43 , Processed in 1.015560 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表