J'ai un script Perl qui tourne dans une boîte AIX.
Le script essaie d'ouvrir un fichier à partir d'un certain répertoire et il échoue à lire le fichier car le fichier n'a pas la permission de lecture, mais j'obtiens une erreur différente disant inappropriate ioctl for device
.
Ne devrait-il pas dire quelque chose comme no read permissions for file
ou quelque chose de similaire ?
Que signifie ce message inappropriate ioctl for device
?
Comment puis-je le réparer ?
MODIFICATION : Voici ce que j'ai trouvé quand j'ai fait strace
.
open("/local/logs/xxx/xxxxServer.log", O\_WRONLY|O\_CREAT|O\_APPEND|O\_LARGEFILE,
0666) = 4 \_llseek(4, 0, \[77146\], SEEK\_END) = 0
ioctl(4, SNDCTL\_TMR\_TIMEBASE or TCGETS, 0xbffc14f8) = -1 ENOTTY
(Inappropriate ioctl for device)
0 votes
Si vous soupçonnez les autorisations - avez-vous déjà essayé de définir les permissions de lecture sur le fichier en question?
1 votes
Réponse à la mise à jour : C'est une ouverture pour écrire / ajouter, pas pour lire, et cela réussit.
0 votes
Oui mais ioctl échoue pour ce handle de fichier. une idée pourquoi?
0 votes
@someguy : cela échoue car ioctl attend un fichier série (/dev/tty) et NON un fichier texte (/local/logs/xxx/xxxxServer.log). Par conséquent, inapproprié iotcl pour le périphérique
1 votes
Oui, comme je le souligne dans mon message, ce n'est pas du tout une erreur. Eh bien, c'est une erreur attendue qui n'est pas exposée au niveau d'abstraction que vous utilisez, de toute façon :)
0 votes
Mais mon script perl utilise $!...qui attrapait "Inappropriate ioctl for device" lorsque nous ouvrions un fichier.. tandis que l'ouverture échouait pour une autre raison.. nous attrapions l'erreur ioctl dans $!.. Nous ne devons donc jamais faire confiance à $! en perl..
3 votes
Encore une fois, non. Lis ma réponse. Tu peux faire confiance à
$!
si tu l'utilises correctement.2 votes
Please translate this keeping the same HTML tags if they exist from en to fr : Ou la réponse de ysth, pour cette question. :)