2017-03-06 20 views
0

TL; DR VxWorks와 터미널 (콘솔) 애플리케이션에서 사용 개행 무엇VxWorks는 개행 문자로 무엇을 사용합니까?

?

내가 줄 바꿈 시퀀스가 ​​Vx 웍스에 의해 예상되는 것을 해결하려고 노력하고

배경 (예를 들어, 표준 : : endl의 또는 유사한 메커니즘). 물론 Windows는 "\ r \ n"을 사용하고 Linux는 "\ n"을 사용하며 Wikipedia에 나열된 OS 구현의 세탁 목록을 포함합니다 ... VxWorks! 또한 isthedocumentation 매우 명확합니다.

답변

1

개행 문자는 대부분의 OS에서와 같이 "\ n"이므로 다음 코드를 실행하여 자신을 확인할 수 있습니다.

#include "vxWorks.h" 
#include "stdio.h" 

void start(void) { 

printf("First Line:\n"); 
printf("Second Line:\n"); 
printf("Fourth Line:"); 
printf("Fifth Line:\n"); 
printf("Sixth Line:\n"); 

} 

로드하고 (경우 커널 모드에서 실행) 위의 모듈을 실행하는 경우, 당신은 밖으로 얻을 것이다으로 넣어 : -

-> ld < so.out 
->value = 944654968 = 0x384e4a78 = 'x' 
-> start 
First Line: 
Second Line: 
Fourth Line:Fifth Line: 
Sixth Line: 
value = 10 = 0xa 
-> 

편집 : DKM의 텍스트 세그먼트

[vxWorks *]# module 

MODULE NAME  MODULE ID GROUP # TEXT START DATA START BSS START 
--------------- ---------- ---------- ---------- ---------- ---------- 
so.out   0x384f7aa8   2 0x10640000 NO SEGMENT 0x10650000 
[vxWorks *]# d 0x10640000 
NOTE: memory values are displayed in hexadecimal. 
0x10640000: 8955 83e5 18ec 04c7 4424 6400 e810 48ee *U.......$D.d...H* 
0x10640010: ffb4 04c7 5024 6400 e810 48e2 ffb4 04c7 *....$P.d...H....* 
0x10640020: 5d24 6400 e810 d196 ffb7 04c7 6a24 6400 *$].d........$j.d* 
0x10640030: e810 48ca ffb4 04c7 7624 6400 e810 48be *...H....$v.d...H* 
0x10640040: ffb4 c3c9 6946 7372 2074 694c 656e 003a *....First Line:.* 
0x10640050: 6553 6f63 646e 4c20 6e69 3a65 4600 756f *Second Line:.Fou* 
0x10640060: 7472 2068 694c 656e 003a 6946 7466 2068 *rth Line:.Fifth * 
0x10640070: 694c 656e 003a 6953 7478 2068 4c20 6e69 *Line:.Sixth Lin* 
0x10640080: 3a65 0000 0014 0000 0000 0000 7a01 0052 *e:...........zR.* 
0x10640090: 7c01 0108 0c1b 0404 0188 0000 001c 0000 *.|..............* 
0x106400a0: 001c 0000 ff5c ffff 0044 0000 4100 080e *....\...D....A..* 
0x106400b0: 0285 0d42 0205 c540 040c 0004 0000 0000 *[email protected]* 
0x106400c0: 6174 2067 4d53 2050 0030 6e65 0064 0000 *tag SMP 0.end...* 
0x106400d0: 0000 0000 0000 0000 0000 0000 0000 0000 *................* 
0x106400e0: 0000 0000 0000 0000 0000 0000 0000 0000 *................* 
0x106400f0: 0000 0000 0000 0000 0000 0000 0000 0000 *................* 
[vxWorks *]# 
+0

답변 해 주셔서 감사합니다. 테스트 할 VxWorks 플랫폼이 없지만 "hexdump"유틸리티로 확인하십시오. 예를 들어, Linux에서는 ./start | hexdump -c 그러면 어떤 문자가 콘솔에 표시되는지 확인할 수 있습니다. 일부 OS (예 : Windows)는 콘솔에 쓸 때 "\ n"을 "\ r \ n"으로 자동 번역합니다. – Damien

+0

나는 hexxump 나 VxWorks의 관련 유틸리티에 대해 잘 모르지만 도움이된다면 커널 모듈의 텍스트 세그먼트 인 대답에 추가 할 것입니다. – endTunnel

+0

불행하게도 모듈의 텍스트는 도움이되지 않습니다. 프로그램 출력의 문자 스트림입니다. – Damien